package com.todo.service;

import com.todo.dto.TodoRequest;
import com.todo.entity.Todo;

import java.time.LocalDate;
import java.util.List;
import java.util.Map;

/**
 * 待办事项服务接口
 */
public interface TodoService {
    
    /**
     * 创建待办事项
     */
    Todo createTodo(Long userId, TodoRequest request);
    
    /**
     * 更新待办事项
     */
    Todo updateTodo(Long userId, TodoRequest request);
    
    /**
     * 删除待办事项
     */
    void deleteTodo(Long userId, Long todoId);
    
    /**
     * 完成待办事项
     */
    void completeTodo(Long userId, Long todoId);
    
    /**
     * 取消完成待办事项
     */
    void uncompleteTodo(Long userId, Long todoId);
    
    /**
     * 根据ID获取待办事项详情
     */
    Todo getTodoById(Long userId, Long todoId);
    
    /**
     * 获取用户的待办事项列表
     */
    List<Todo> getTodoList(Long userId, Integer status);
    
    /**
     * 获取用户的待办事项列表（支持关键词搜索）
     */
    List<Todo> getTodoList(Long userId, Integer status, String keyword);
    
    /**
     * 搜索待办事项
     */
    List<Todo> searchTodos(Long userId, String keyword, Integer status);
    
    /**
     * 根据日期获取待办事项
     */
    List<Todo> getTodosByDate(Long userId, LocalDate date);
    
    /**
     * 获取待办事项统计
     */
    Map<String, Object> getTodoStatistics(Long userId);
    
    /**
     * 获取今天、明天、后天的待办事项
     */
    Map<String, List<Todo>> getTodosGroupByDate(Long userId);
} 